package com.xiaoc.bulldozer.common.service;

import java.util.List;

import com.xiaoc.bulldozer.common.dto.WeixinUserDto;
import com.xiaoc.bulldozer.common.dto.WeixinUserQueryDto;
import com.xiaoc.bulldozer.common.model.WeixinUser;

/**
 * WeixinUser Service 接口
 * 
 * @author Danfo Yam
 * 
 * @date 2018-08-24 15:47:58
 */
public interface WeixinUserService {

    /**
     * 根据条件查询WeixinUser数量
     
     * @param WeixinUserQueryDto
     *
     * @return 满足查询条件的记录数量
     */
    public Integer getWeixinUserCountByCondition(WeixinUserQueryDto weixinUserQueryDto);
    
    /**
     * 根据条件分页查询WeixinUser列表
     *
     * @param WeixinUserQueryDto
     *
     * @return 满足查询条件的WeixinUser列表
     */
    public List<WeixinUser> getWeixinUserListByCondition(WeixinUserQueryDto weixinUserQueryDto);
    
    /**
     * 根据Id获取WeixinUser
     * 
     * @param id
     *
     * @return WeixinUser对象
     */
    public WeixinUser getWeixinUserById(Integer id);

    /**
     * 获取所有WeixinUser列表
     * 
     * @return WeixinUser列表
     */
    public List<WeixinUser> getAllWeixinUserList();

    /**
     * 新增WeixinUser
     * 
     * @param weixinUser
     *
     * @return void
     */
    public void save(WeixinUser weixinUser);

    /**
     * 更新WeixinUser
     * 
     * @param weixinUser
     *
     * @return void
     */
    public void update(WeixinUser weixinUser);

    /**
     * 根据Id删除WeixinUser
     * 
     * @param id
     *
     * @return void
     */
    public void deleteById(Integer id);

    /**
     * 从缓存中获取weixinUserDto
     * 
     * @param sessionId
     * @return
     */
    public WeixinUserDto getWeixinUserDtoBySessionId(String sessionId);

    /**
     * 将weixinUserDto放入sesionId中
     * 
     * @param sessionId
     * @param weixinUserDto
     */
    public void putWeixinUserDto(String sessionId, WeixinUserDto weixinUserDto);

    /**
     * 根据openId获取微信用户信息
     * 
     * @param openId
     * @return
     */
    public WeixinUser getWeixinUserByOpenId(String openId);
    
    /**
     * 根据手机号获取微信用户信息
     * 
     * @param phoneNumber
     * @return
     */
    public List<WeixinUser> getWeixinUserListByPhoneNumber(String phoneNumber);

    /**
     * 获取微信用户列表
     * @param weixinUserQueryDto
     * @return
     */
    public List<WeixinUserDto> getWeixinUserList(WeixinUserQueryDto weixinUserQueryDto);

    /**
     * 获取微信用户数量
     * @param weixinUserQueryDto
     * @return
     */
    public Integer getWeixinUserCount(WeixinUserQueryDto weixinUserQueryDto);

}
